package com.template.common.result;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 响应结果码枚举
 * 
 * @author template
 * @since 2024-01-01
 */
@Getter
@AllArgsConstructor
public enum ResultCode {

    /**
     * 成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 失败
     */
    ERROR(500, "操作失败"),

    /**
     * 参数错误
     */
    PARAM_ERROR(400, "参数错误"),

    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),

    /**
     * 禁止访问
     */
    FORBIDDEN(403, "禁止访问"),

    /**
     * 资源不存在
     */
    NOT_FOUND(404, "资源不存在"),

    /**
     * 方法不允许
     */
    METHOD_NOT_ALLOWED(405, "方法不允许"),

    /**
     * 请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),

    /**
     * 服务器内部错误
     */
    INTERNAL_SERVER_ERROR(500, "服务器内部错误"),

    /**
     * 服务不可用
     */
    SERVICE_UNAVAILABLE(503, "服务不可用"),

    /**
     * 数据库错误
     */
    DATABASE_ERROR(1001, "数据库操作失败"),

    /**
     * 业务异常
     */
    BUSINESS_ERROR(2001, "业务处理失败"),

    /**
     * 数据不存在
     */
    DATA_NOT_EXIST(2002, "数据不存在"),

    /**
     * 数据已存在
     */
    DATA_ALREADY_EXIST(2003, "数据已存在"),

    /**
     * 数据状态异常
     */
    DATA_STATUS_ERROR(2004, "数据状态异常");

    /**
     * 响应码
     */
    private final Integer code;

    /**
     * 响应消息
     */
    private final String message;
}
